package com.soft.springhrms.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;

public class DateUtils {

    // 定义常用的时间格式
    private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";

    /**
     * 格式化 Date 类型日期到秒，默认格式为 yyyy-MM-dd HH:mm:ss
     *
     * @param date 待格式化的 Date 对象
     * @return 格式化后的字符串，若输入为 null 则返回空字符串
     */
    public static String formatDate(Date date) {
        if (date == null) {
            return "";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_PATTERN);
        return sdf.format(date);
    }

    /**
     * 格式化 LocalDateTime 类型日期到秒，默认格式为 yyyy-MM-dd HH:mm:ss
     *
     * @param localDateTime 待格式化的 LocalDateTime 对象
     * @return 格式化后的字符串，若输入为 null 则返回空字符串
     */
    public static String formatLocalDateTime(LocalDateTime localDateTime) {
        if (localDateTime == null) {
            return "";
        }
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DEFAULT_PATTERN);
        return localDateTime.format(formatter);
    }

    /**
     * 格式化 Date 类型日期到指定格式
     *
     * @param date    待格式化的 Date 对象
     * @param pattern 指定的日期格式
     * @return 格式化后的字符串，若输入为 null 或格式无效则返回空字符串
     */
    public static String formatDate(Date date, String pattern) {
        if (date == null || pattern == null || pattern.isEmpty()) {
            return "";
        }
        try {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            return sdf.format(date);
        } catch (IllegalArgumentException e) {
            // 捕获非法日期格式异常
            return "";
        }
    }

    /**
     * 格式化 LocalDateTime 类型日期到指定格式
     *
     * @param localDateTime 待格式化的 LocalDateTime 对象
     * @param pattern       指定的日期格式
     * @return 格式化后的字符串，若输入为 null 或格式无效则返回空字符串
     */
    public static String formatLocalDateTime(LocalDateTime localDateTime, String pattern) {
        if (localDateTime == null || pattern == null || pattern.isEmpty()) {
            return "";
        }
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(pattern);
            return localDateTime.format(formatter);
        } catch (IllegalArgumentException e) {
            // 捕获非法日期格式异常
            return "";
        }
    }
    public static Date DateFormStringToDate(String str) {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try{
            return format.parse(str);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }

}
